package com.example.springbootbookv2.service;

import com.example.springbootbookv2.model.User;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import java.util.Collection;
import java.util.List;

/**
 * 业务层
 * @author waqwb
 */
public interface UserService {
    /**
     * 查询单个数据
     * @param id
     * @return
     */
    User findById(String id);

    /**
     * 保存和更新数据
     * @param user
     * @return
     */
    User save(User user);

    /**
     * 删除数据
     * @param id
     */
    void delete(String id);

    /**
     * 查找全部数据
     * @return
     */
    List<User> findAll();

    /**
     * 分页
     * @param pageable
     * @return
     */
    Page<User> findAll(Pageable pageable);

    /**
     * 通过名字相等查询
     * select u from user u where u.name = ?
     * @param name
     * @return
     */
    List<User> findByName(String name);

    /**
     * 通过名字like查询
     * select u from user u where u.name like ?
     * @param name
     * @return
     */
    List<User> findByNameLike(String name);

    /**
     * 通过主键id集合查询
     * select u from user u where id in (?,?,?)
     * @param ids
     * @return
     */
    List<User> findByIdIn(Collection<String> ids);

}
